package com.huiminpay.merchant.api;

import com.huiminpay.common.cache.domain.BusinessException;
import com.huiminpay.common.cache.domain.PageVO;
import com.huiminpay.merchant.dto.MerchantDTO;
import com.huiminpay.merchant.dto.StaffDTO;
import com.huiminpay.merchant.dto.StoreDTO;

/**
 * Created with IntelliJ IDEA.
 * @Author: 有点儿意思
 * @Description:
 */
public interface MerchantService {

    /**
     * 根据id查询商户信息
     * @param merchantId 商户id
     * @return  封装的商户dto对象 作为service层传输的对象使用
     */
    MerchantDTO queryMerchantById(Long merchantId);


    /**
     * 创建商户信息
     * @param merchantDTO 封装商户DTO对象
     * @return DTO信息
     */
    MerchantDTO createMerchant(MerchantDTO merchantDTO);


    /**
     * 请求保存资质信息 相当于更新数据库表操作
     * @param merchantId 商户id
     * @param merchantDTO  封装DTO对象
     */
    void applyMerchant(Long merchantId,MerchantDTO merchantDTO);

    /**
     * 新增门店信息
     * @param storeDTO 门店信息
     * @return 门店信息
     * @throws BusinessException
     */
    StoreDTO createStore(StoreDTO storeDTO) throws BusinessException;


    /**
     * 新增门店员工信息
     * @param staffDTO 员工信息
     * @return  门店员工信息
     * @throws BusinessException
     */
    StaffDTO createStaff(StaffDTO staffDTO) throws BusinessException;

    /**
     * 为 门店绑定员工
     * @param staffId 员工id
     * @param storeId 门店id
     * @throws BusinessException
     */
    void bindStaffToStore(Long staffId,Long storeId) throws BusinessException;

    /**
     * 根据租户id查询商户
     * @param tenantId 租户id
     * @return 商户
     */
    MerchantDTO queryMerchantByTenantId(Long tenantId);

    /**
     * 分页查询商户下的门店信息
     * @param storeDTO 门店信息
     * @param page 页码
     * @param limit 当前页数量
     * @return 分页对象
     */
    PageVO<StoreDTO> queryStoreByPage(StoreDTO storeDTO,Integer page,Integer limit);


    /**
     * 查询门店是否属于商户
     * @param storeId 门店id
     * @param merchantId 商户id
     * @return 门店属于商户
     */
    Boolean queryStoreInMerchant(Long storeId,Long merchantId);
    
}
